package com.wing.bill.controller.admin;

import com.wing.bill.service.CabinetFormService;
import com.wing.bill.service.WorkshopReportService;
import com.wing.common.utils.JsonResult;
import com.wing.web.utils.JwtUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@Validated
@Api(value = "Admin-刀具柜异常报表", tags = "#/bill/unusualReport")
@RestController("unusualReportController")
@RequestMapping("bill/admin/unusualReport")
@RequiredArgsConstructor
public class UnusualReportController {

    private final WorkshopReportService workshopReportService;
    private final CabinetFormService cabinetFormService;

    final String dateType = "before";//当前[current]/往前推一周、月[before]（用于业务判断获取当前日期）

    @ApiOperation(value = "顶部趋势图", notes = "异常统计（按天）")
    @GetMapping("/list")
    public JsonResult list(
            @RequestParam("param") String param //柱状图饼状图的下拉选 不同的选项 qua 数量 money 金额

    ){
        String code = JwtUtils.getEnterpriseCode();
        return workshopReportService.findAbnormalStatisticsByDay(code,param);
    }

    @ApiOperation(value = "顶部格子数据", notes = "物料数据统计")
    @GetMapping("/topCell")
    public JsonResult topCell(
            @RequestParam("type")String type//012 当日当周当月
            ,@RequestParam("startTime")String startTime//时间搜索 开始时间
            ,@RequestParam("endTime")String endTime//时间搜索 结束时间
            ,@RequestParam("click")String click//顶部数据点击
            ,@RequestParam("mainCabCode") String mainCabCode //主柜选择
    ){
        String code = JwtUtils.getEnterpriseCode();

        return cabinetFormService.list7(type,dateType,startTime,endTime,Integer.valueOf(click),code,mainCabCode);
    }

    @ApiOperation(value = "中部第一个图", notes = "物料异常排名")
    @GetMapping("/midFirstChart")
    public JsonResult midFirstChart(
            @RequestParam("type")String type//012 日周月
            , @RequestParam("startTime")String startTime//时间搜索 开始时间
            , @RequestParam("endTime")String endTime//时间搜索 结束时间
            , @RequestParam("mainCabCode")String mainCabCode //主柜编码
            , @RequestParam("code")String code //企业编码
            , @RequestParam("param") String param //柱状图饼状图的下拉选 不同的选项 qua 数量 money 金额
    ){
        return workshopReportService.findAbnormalMaterialComparison(type,dateType,startTime,endTime,code,mainCabCode,param);
    }

    @ApiOperation(value = "中部第二个图", notes = "异常登记人员对比")
    @GetMapping("/midSecondChart")
    public JsonResult midSecondChart(
            @RequestParam("type")String type//012 日周月
            , @RequestParam("startTime")String startTime//时间搜索 开始时间
            , @RequestParam("endTime")String endTime//时间搜索 结束时间
            , @RequestParam("mainCabCode")String mainCabCode //主柜编码
            , @RequestParam("code")String code //企业编码
            , @RequestParam("param") String param //柱状图饼状图的下拉选 不同的选项 qua 数量 money 金额
    ){
        return workshopReportService.findAbnormalRegistrationComparison(type,dateType,startTime,endTime,code,mainCabCode,param);
    }

    @ApiOperation(value = "中部第三个图", notes = "异常原因占比分析")
    @GetMapping("/midThirdChart")
    public JsonResult midThirdChart(
            @RequestParam("type")String type//012 日周月
            ,@RequestParam("startTime")String startTime//时间搜索 开始时间
            ,@RequestParam("endTime")String endTime//时间搜索 结束时间
            ,@RequestParam("mainCabCode")String mainCabCode //主柜编码
            ,@RequestParam("code")String code //企业编码
            ,@RequestParam("param") String param //柱状图饼状图的下拉选 不同的选项 qua 数量 money 金额
    ){
        return workshopReportService.findAbnormalCauseAnalysis(type,dateType,startTime,endTime,code,mainCabCode,param);
    }

    @ApiOperation(value = "底部趋势图", notes = "异常统计")
    @GetMapping("/data")
    public JsonResult data(
            @RequestParam("type")String type//012 日周月
            ,@RequestParam("startTime")String startTime//时间搜索 开始时间
            ,@RequestParam("endTime")String endTime//时间搜索 结束时间
            ,@RequestParam("mainCabCode")String mainCabCode //主柜编码
            ,@RequestParam("param") String param //柱状图饼状图的下拉选 不同的选项 qua 数量 money 金额
    ){
        String code = JwtUtils.getEnterpriseCode();
        return workshopReportService.findAbnormalStatistics(type,dateType,startTime,endTime,code,mainCabCode,param);
    }
}
